#include <stdio.h>

// void test(int arr[5])
void test(int *arr)

{

    printf("sizeof(arr)=%d\n", sizeof(arr)); // 8 arr现在是一个指针 不是整个数组
    int *p = arr;
    printf("test start %u %u\n", p, p + 1); // 步长是4  arr是数组首元素的地址

    for (int i = 0; i < 5; i++)
    {
        // printf("==test before i=%d %d\n", i, arr[i]);
        arr[i] = arr[i] + 100;
        // printf("test after i=%d %d\n", i, arr[i]);
    }
    // 传递过来的arr 只是 main函数里面 a数组的首地址
    // test函数内部 访问或者修改arr 是main函数栈帧保存的
}
int main()
{

    int a[5] = {11, 22, 33, 44, 55};

    test(a); // a是一个数组  传递数组 本质上是传递数组的首地址
    // 数组名在表达式内会自动转化为 数组的首地址

    for (int i = 0; i < 5; i++)
    {
        printf("main i=%d %d\n", i, a[i]);
    }

    return 0;
}
